home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / endo / globals.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  4KB  |  91 lines

  1. /*************************************************************************
  2.  *                                                                       *
  3.  *  Copyright (c) 1992, 1993 Ronald Joe Record                           *
  4.  *                                                                       *
  5.  *  All rights reserved. No part of this program or publication may be   *
  6.  *  reproduced, transmitted, transcribed, stored in a retrieval system,  *
  7.  *  or translated into any language or computer language, in any form or *
  8.  *  by any means, electronic, mechanical, magnetic, optical, chemical,   *
  9.  *  biological, or otherwise, without the prior written permission of:   *
  10.  *                                                                       *
  11.  *      Ronald Joe Record (408) 458-3718                                 *
  12.  *      212 Owen St., Santa Cruz, California 95062 USA                   *
  13.  *                                                                       *
  14.  *************************************************************************/
  15.  
  16. /************************************************************************
  17.  *        globals.h: contains all items useful to vuetest               *
  18.  *                                                                      *
  19.  *                Written by Hiram Clawson.  The Santa Cruz Operation   *
  20.  *                Ported to X11 by Ronald Joe Record.                   *
  21.  ************************************************************************/
  22. #ifndef GLOBALS_H
  23.  
  24. #ifdef __MAIN__        /*    define this in the main program only    */
  25. #define    EXTERN        /*    which will cause definitions of variables*/
  26. #else
  27. #define    EXTERN    extern    /*    otherwise, they are externs for subroutines*/
  28. #endif
  29.  
  30. #include "defines.h"
  31.  
  32. #ifdef _NO_PROTO
  33. EXTERN void rotate ();
  34. EXTERN void vue_init();
  35. EXTERN int plot();
  36. EXTERN void parseopt();
  37.  
  38. EXTERN void draw_lines();
  39. EXTERN void RotateWindow();
  40. #else
  41. EXTERN void rotate (triple *, triple *, triple *, double *, double *, double *);
  42. EXTERN void vue_init( triple, int, int );
  43. EXTERN int plot( triple, xy_t * );
  44. EXTERN void parseopt( int, char * [] );
  45.  
  46. EXTERN void draw_lines( int [], xy_t * );
  47. EXTERN void RotateWindow( double *, triple * );
  48. #endif
  49.  
  50. #define    TAN_30_DEGREES            0.577
  51. #define VECTOR_LENGTH(v)    (sqrt( (v.x * v.x) + (v.y * v.y) + (v.z * v.z)))
  52. /*    the vector from point a to point b is: */
  53. #define VECTORIZE(v,a,b)    v.x = b.x - a.x; v.y = b.y - a.y; v.z = b.z - a.z
  54. #define POINTS_NOT_EQUAL(a,b) (a.x != b.x) || (a.y != b.y) || (a.z != b.z)
  55. #define DOT_PRODUCT(a,b) ( (a.x * b.x) + (a.y * b.y) + (a.z * b.z) )
  56. #define UNIT_VECTOR(lambda,v,length) lambda.x = v.x / length;\
  57. lambda.y = v.y / length; lambda.z = v.z / length
  58. #define VECTOR_X_SCALAR(v_out,v,s) v_out.x = v.x * s; v_out.y = v.y * s;\
  59. v_out.z = v.z * s
  60. #define POINT_PLUS_VECTOR(a,b,v) a.x = b.x + v.x; a.y = b.y + v.y;\
  61. a.z = b.z + v.z
  62. EXTERN xy_t screen_max;
  63. EXTERN xy_t screen_center;
  64. EXTERN double _3D_units_per_ypixel;
  65. typedef struct {
  66.     triple P1;
  67.     triple P2;
  68. } LINE_END_POINTS ;
  69. EXTERN LINE_END_POINTS grid_lines[30];
  70. EXTERN double half_pi;
  71. EXTERN double two_pi;
  72. EXTERN double radians_per_degree;
  73. EXTERN double degrees_per_radian;
  74.  
  75. EXTERN triple window_center;
  76. EXTERN triple window_top;
  77. EXTERN triple window_upper_right;
  78. EXTERN triple window_right;
  79. EXTERN triple view_point;
  80. EXTERN triple v_center_top;
  81. EXTERN triple v_center_right;
  82. EXTERN triple v_view_center;
  83. EXTERN double length_view_center;
  84. EXTERN double length_center_right;
  85. EXTERN double length_center_top;
  86. EXTERN double field_of_view;        /* in radians */
  87. EXTERN double cosine_half_field_of_view;
  88.  
  89. #define GLOBALS_H    /*    indicate that I have been included    */
  90. #endif
  91.